#include <iostream>
#include <vector>

using namespace std;

// немного модифицированный вариант префикс-функции
// возвращает длину "периода" строки
int calculatePeriod(const string& s)
{
    int size = s.size();

    // значения префикс-функции
	// индекс вектора соответствует номеру последнего символа аргумента
	vector<int> result(size);
	// для префикса из нуля и одного символа функция равна нулю
	result[0] = 0;

    int k = 0;

    // вычисляем префикс-функцию, пока на какой-то подстроке
    // она не станет равной половине длины этой подстроки
    // тогда получится, что мы нашли подстроку, в которой
    // умещается 2 периода
	for (int i = 1; i < size; ++i)
    {
		while ((k > 0) && (s[k] != s[i]))
		{
		    k = result[k - 1];
		}

		if (s[k] == s[i])
        {
            ++k;
        }

		result[i] = k;

        // еще нужно проверить, что длина периода удовлетворяет условиям задачи,
        // т.е. что 3 периода в строку уже не влезает
		if (result[i] * 2 == i + 1 && result[i] * 3 > s.size())
        {
            return result[i];
        }
	}
	// до сюда мы дойти не должны
	// т.к. гарантированно есть подстрока,
	// включающая 2 периода
	return result[size - 1];
}

int main()
{
    int numberOfTests;
    cin >> numberOfTests;

    // для каждой строки вычисляем период -
    // размер повторяющейся части
    // а потом выводим нужные 8 символов
    for (int i = 0; i < numberOfTests; ++i)
    {
        string s;
        cin >> s;

        int period  = calculatePeriod(s);

        for (int j = 0; j < 8; ++j)
        {
            cout << s[(s.size() + j) % period];
        }
        cout << "..." << endl;
    }
    return 0;
}
